package com.ys.p1.method;

/**
 * @author CodeYang
 * @Description 方法的重载:Overloading
 * 在同一个类中，允许存在一个以上的同名方法，只要它们的参数个数或者参数类型不同即可。
 * 核心为两同两不同：
 * - 同一个类，同一个方法名
 * - 参数列表不同（类型、个数）
 * @Date 2020/12/8 16:03
 */
public class 重载方法 {

    /**
     * 方法的定义(使用)特点:
     * 1:是否需要返回值,返回值与返回值类型(隐式转换后)要保持一致
     * 2:是否需要外界参数,参与运算,需要的话,形参列表,要与传入参数(隐式转换后)保持一致
     * 方法的分类:
     * 1: 无参,无返回值:
     * 2: 无参,有返回值
     * 3: 有参,无放回值
     * 4  有参,有返回值
     * OverLoading:特点:注意
     * 1返回值不同不构成方法的重载。
     * 2形参的名称不同，不构成方法的重载。
     * 3方法修饰符不同，不构成方法的重载。
     * 4注意：重载的方法，实际是完全不同的方法！只是方法名称相同而已！
     * 方法重载,只在乎,参数列表的类型,个数,不关心,变量名
     *
     * @param args
     */
    public static void main(String[] args) {

        printf();
        int add = add();
        System.out.println(add);
        add(3,4);
        add(3.0,4);
    }

    /**
     * 1无参,无返回值;  如打印hello word
     * 需求：在方法中输出“hello world”。
     * 分析：不需要参数和返回值，应该选用无参无返回值方法。
     */
    public static void printf() {
        System.out.println("Hello Word");
    }
    /**
     * 2:无参,有返回值:
     * 需求：调用方法获得常量3+ 4的和。
     * 分析：不需要外界传入参数，但是需要返回常量3+4之和。
     */
    public  static  int add(){
        return 3+4;
    }
    /**
     * 3: 有参,无返回值
     * 需求：在方法中输出指定两个int变量的和。
     * 分析：需要外界传入两个int类型的参数，但不需要返回值
     * 这里同名了,但是参数列表(类型,个数)不同,相当于两个不同的方法.OverLoading 重载
     * 重载方法的调用,根据输入参数列表(类型与个数)的不同,调用同名的"不同的方法"
     */
    public static  void add (int n1,int n2){
        System.out.println("void add (int n1,int n2)");
        System.out.println(n1+n2);
    }
    /**
     * 4: 有参,有返回值:
     * 需求：调用方法获得指定两个double变量的和。
     * 分析：需要外界传入两个double类型的形参，并返回两个double类型形参之和
     * OverLoading 重载 参数类型不同--
     *
     */
    public static  double add (double n1,double n2){
        System.out.println("double add (double n1,double n2)");
        System.out.println(n1+n2);
        return n1+n2;
    }
}
